package com.itheima.examination6;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Set;

public class PersonTest {
    public static void main(String[] args) {
        // 1. 将人员信息存放到ArrayList集合中
        ArrayList<Person> personList = new ArrayList<>();
        personList.add(new Person("张成", 28, "甘肃"));
        personList.add(new Person("刘安", 37, "宁夏"));
        personList.add(new Person("刘墉", 40, "山东"));
        personList.add(new Person("和珅", 35, "北京"));
        personList.add(new Person("和二", 36, "北京"));
        personList.add(new Person("纪晓岚", 39, "山西"));
        personList.add(new Person("刘安", 37, "宁夏")); // 重复人员

        System.out.println("1. 初始人员信息：");
        personList.forEach(System.out::println);

        // 2. 随机输出一个人员信息
        System.out.println("\n2. 随机输出一个人员信息：");
        Random random = new Random();
        int randomIndex = random.nextInt(personList.size());
        System.out.println("随机选择的人员：" + personList.get(randomIndex));

        // 3. 删除姓和的人员
        System.out.println("\n3. 删除姓和的人员：");
        personList.removeIf(person -> person.getName().startsWith("和"));
        System.out.println("删除后人员信息：");
        personList.forEach(System.out::println);

        // 4. 去掉重复人员信息（采用Set集合）
        System.out.println("\n4. 去掉重复人员信息：");
        Set<Person> personSet = new LinkedHashSet<>(personList);
        personList = new ArrayList<>(personSet);
        System.out.println("去重后人员信息：");
        personList.forEach(System.out::println);

        // 5. 修改纪晓岚的地址信息为河北
        System.out.println("\n5. 修改纪晓岚的地址信息为河北：");
        for (Person person : personList) {
            if ("纪晓岚".equals(person.getName())) {
                person.setAddress("河北");
                break;
            }
        }
        System.out.println("修改后人员信息：");
        personList.forEach(System.out::println);

        // 6. 打印输出大于35岁的所有人员信息
        System.out.println("\n6. 大于35岁的所有人员信息：");
        personList.stream()
                .filter(person -> person.getAge() > 35)
                .forEach(System.out::println);
    }
}

